package JUC;


import java.util.concurrent.atomic.AtomicInteger;
/**
 * @author 豆包LU
 * @date 2023/5/5 15:19
 */
public class VolatileAtomicTest1 {
    // 定义一个原子变量
    private AtomicInteger count = new AtomicInteger(0);

    public static void main(String[] args) throws InterruptedException {
        // 创建一个测试实例
        VolatileAtomicTest1 test1 = new VolatileAtomicTest1();

        // 创建10个线程，每个线程对count变量执行1000次自增操作
        Thread[] threads = new Thread[10];
        for (int i = 0; i < threads.length; i++) {
            threads[i] = new Thread(() -> {
                for (int j = 0; j < 1000; j++) {
                    test1.increment();
                }
            });
            threads[i].start();
        }

        // 等待所有线程执行完毕
        for (Thread thread : threads) {
            thread.join();
        }

        // 输出计数器的值
        System.out.println("count = " + test1.getCount());
    }

    /**
     * 自增计数器的方法，使用AtomicInteger的incrementAndGet()方法
     */
    public void increment() {
        count.incrementAndGet();
    }

    /**
     * 获取计数器的值，使用AtomicInteger的get()方法
     */
    public int getCount() {
        return count.get();
    }
}
